| |
Количество дыр, bug'ов и неточностей документации в Windows 95/98
не поддается описанию. Что-то документировано, но не работает, что-то не
работает так, как документировано, что-то просто невозможно сделать
стандартными средствами, а сделать хочется. На эту страницу я буду скидывать
примеры кода, позволяющие как-то справляться с этими проблемами.
ВНИМАНИЕ! Весь код поставляется по принципу AS IS. Никаких гарантий не
прилагается и не предусматривается. Вы используете эти примеры на свой риск.
 |
cb01. Аппроксимация эллипса полиномами Безье |
В Win95/98, в отличие от Windows NT/2000, отсутствует преобразование координат.
К примеру, если нарисован эллипс, его нельзя вращать. Единственный способ
аппроксисмировать эллипс полиномами Безье, применить преобразование координат к
точкам полиномов, после чего вывести на экран функцией API PolyBezier, что и
сделано в данном примере.
Платформа: Windows 95/98/ME, Borland Delphi 5.0
Литература: API/GDI Platform SDK,
Some
Mathematics for Advanced Graphics
download cb01-bezier.exe (197 kB)
 |
cb02. Эмуляция альфа-канала и эффекты прозрачности для DirectDraw |
В DirectDraw нет эффектов прозрачности, так как невозможно создать поверхность
с флагом DDSD_ALPHABITDEPTH (альфа-канал работает только в Direct3D, а в документации это нигде не указано:).
Этот пример иллюстрирует прямой доступ к данным поверхностей DirectDraw с
помощью функции IDirectDrawSurface4.Lock для эмуляции альфа-канала. Можно
использовать как основу для реализации других пиксельных эффектов.
Платформа: Windows 95/98/ME, Borland Delphi 5.0
Литература: API/GDI Platform SDK, DirectX SDK, заголовочные
файлы DirectX 6.0 для Delphi
download cb02-alpha.exe (276 kB)
 |
cb03. Преобразование BMP в текстовый файл |
Пример начального уровня, демонстрирующий преобразование растрового изображения
(.bmp) в текстовый файл и обратно. Для этого используется массив
TBitmap.Canvas.Pixels[X, Y], дающий доступ к точкам изображения.
Кроме того, демонстрируется масштабирование картинки с помощью функции
TImage.Canvas.StretchDraw и прокрутка в окне с помощью компонента TScrollBox.
Платформа: Windows 95/98/ME, Borland Delphi 5.0
Литература: Delphi help
download cb03-bmp2txt.exe (223 kB)
|